﻿/// <reference path="../Externos/jquery-ui-1.10.2.custom.min.js" />
/// <reference path="../Externos/jquery-1.9.1.min.js" />
/// <reference path="Comun.js" />
/// <reference path="../Externos/jquery-geturlparam.js" />

//-------------------------------------------------------------------------------
// CARGA BÚSQUEDA AVANZADA
//-------------------------------------------------------------------------------
$(document).ready(function () {
    $('.numeric').numeric();

    InicializarEventoTarjeta(1);

    //Inicializar los calendarios en castellano
    LocalizarDataPickers();

    //Inicializar localidades
    Ajax("ObtenerLocalidades", '{}', ObtenerLocalidades_cb);
    
    $('#dialogo-reserva').dialog({
        height: 750,
        width: 635,
        modal: true,
        resizable: false,
        draggable: false,
        autoOpen: false,
        dialogClass: "reserva",
        buttons: [{
            text: "Reservar",
            click: RealizarReserva
        },
         {
             text: "Cancelar",
             click: function () {
                 $('#dialogo-reserva').dialog('close');
             }
         }]
    });
    $(".reserva").find('.ui-dialog-titlebar').hide();

    //----------------------- RANGO PUNTUACIÓN ----------------------//
    $("#sliderPuntuacion").slider({
        range: true,
        min: 1,
        max: 10,
        range: "min",
        values: [1, 10],
        slide: function (event, ui) {
            $("#spanRangoPuntuacion").html("(" + ui.values[0] + " - " + ui.values[1] + ")");
        }
    });
    $("#spanRangoPuntuacion").html("(" + $("#sliderPuntuacion").slider("values", 0) + " - " + $("#sliderPuntuacion").slider("values", 1) + ")");

    //----------------------- RANGO PRECIO ----------------------//
    $("#sliderPrecio").slider({
        range: true,
        min: 20,
        max: 300,
        range: "min",
        values: [20, 300],
        slide: function (event, ui) {
            $("#spanRangoPrecio").html("(" + ui.values[0] + "€ - " + ui.values[1] + "€)");
        }
    });
    $("#spanRangoPrecio").html("(" + $("#sliderPrecio").slider("values", 0) + "€ - " + $("#sliderPrecio").slider("values", 1) + "€)");

    //----------------------- CALENDARIOS ---------------------------//
    $("#inputFechaEntrada").datepicker({
        dateFormat: "dd-mm-yy",
        minDate: 0,
        numberOfMonths: 3,
        onSelect: function () {
            var fechaEntrada = $(this).datepicker('getDate');
            var fechaSalida =  $("#inputFechaSalida").datepicker('getDate');
            var dias = CalcularDiasEnHotel(fechaEntrada,fechaSalida);
        
            if (dias < 1) {
                fechaSalida.setTime(fechaEntrada.getTime()  + 1 * 24 * 60 * 60 * 1000);
                $("#inputFechaSalida").datepicker('setDate', fechaSalida);
                $("#inputFechaSalida").datepicker('option', 'minDate', fechaSalida);
            }  
        }
    });
    $("#inputFechaEntrada").datepicker("setDate", "0d");

    $("#inputFechaSalida").datepicker({
        dateFormat: "dd-mm-yy",
        minDate: 1,
        numberOfMonths: 3
    });
    $("#inputFechaSalida").datepicker("setDate", "+1d");

    //----------------------- BOTONES -------------------------------//
    $("#btnLimpiarBusquedaHoteles").button({
        icons: { secondary: "ui-icon-refresh" }
    }).click(function () {
        LimpiarFormBusqueda();
    });

    $("#btnNuevaBusqueda").button({
        icons: { secondary: "ui-icon-triangle-1-s" }
    }).click(function () {
        $("#btnLimpiarBusquedaHoteles").show();
        $("#btnBuquedaHoteles").show();
        $("#btnNuevaBusqueda").hide();
        $('#contentFiltros').slideDown(500);
    }).hide();

    $("#btnBuquedaHoteles").button({
        icons: { secondary: "ui-icon-search" }
    }).click(function () {
        if ($("#inputBusqueda").val() != "")
            ObtenerBusquedaAvanzada();
        else
            MostrarAlerta('Introduzca hotel a buscar.', 3);
    });
    /*
    $('#num-habitaciones-reserva').change(function () {
        var habitacion = $('#dialogo-reserva #habitacion-reserva').data('habitacion-reserva'),
            numHabitaciones = $(this).find('option:selected').val(),
            FechaEntrada = $("#inputFechaEntrada").datepicker('getDate'),
            FechaSalida = $("#inputFechaSalida").datepicker('getDate'),
            diasEnHotel = CalcularDiasEnHotel(FechaEntrada, FechaSalida),
            totalReserva = redondeo2decimales(habitacion.precioSinFormato * diasEnHotel * numHabitaciones);
        $('#dialogo-reserva #total-reserva').html(totalReserva);
    });
    */

    //----------------------- EFECTO ESTRELLAS ----------------------//
    //ESTRELLA1
    $('#estrella1off, #estrella1on').hover(function () {
        $('#estrella1off').hide();
        $('#estrella1on').show();
    }, function () {
        $('#estrella1on').hide();
        $('#estrella1off').show();
    });

    //ESTRELLA2
    $('#estrella2off, #estrella2on').hover(function () {
        $('#estrella1off').hide();
        $('#estrella2off').hide();
        $('#estrella1on').show();
        $('#estrella2on').show();
    }, function () {
        $('#estrella1on').hide();
        $('#estrella2on').hide();
        $('#estrella2off').show();
        $('#estrella1off').show(); 
    });

    //ESTRELLA3
    $('#estrella3off, #estrella3on').hover(function () {
        $('#estrella1off').hide();
        $('#estrella2off').hide();
        $('#estrella3off').hide();
        $('#estrella1on').show();
        $('#estrella2on').show();
        $('#estrella3on').show();
    }, function () {
        $('#estrella1on').hide();
        $('#estrella2on').hide();
        $('#estrella3on').hide();
        $('#estrella1off').show();
        $('#estrella2off').show();      
        $('#estrella3off').show();
    });

    //ESTRELLA4
    $('#estrella4off, #estrella4on').hover(function () {
        $('#estrella1off').hide();
        $('#estrella2off').hide();
        $('#estrella3off').hide();
        $('#estrella4off').hide();
        $('#estrella1on').show();
        $('#estrella2on').show();
        $('#estrella3on').show();
        $('#estrella4on').show();
    }, function () {
        $('#estrella1on').hide();
        $('#estrella2on').hide();
        $('#estrella3on').hide();
        $('#estrella4on').hide();
        $('#estrella1off').show();
        $('#estrella2off').show();
        $('#estrella3off').show();
        $('#estrella4off').show();
    });

    //ESTRELLA5
    $('#estrella5off, #estrella5on').hover(function () {
        $('#estrella1off').hide();
        $('#estrella2off').hide();
        $('#estrella3off').hide();
        $('#estrella4off').hide();
        $('#estrella5off').hide();
        $('#estrella1on').show();
        $('#estrella2on').show();
        $('#estrella3on').show();
        $('#estrella4on').show();
        $('#estrella5on').show();
    }, function () {
        $('#estrella1on').hide();
        $('#estrella2on').hide();
        $('#estrella3on').hide();
        $('#estrella4on').hide();
        $('#estrella5on').hide();
        $('#estrella1off').show();
        $('#estrella2off').show();
        $('#estrella3off').show();
        $('#estrella4off').show();
        $('#estrella5off').show();
    });
    /*--------------------------------------------------------------*/
});

//-----------------------------------------------------------------------------
// CARGAR LOCALIDADES DISPONIBLES
//-----------------------------------------------------------------------------
function ObtenerLocalidades_cb(res){
    var Resultado = res.d.Resultado;
    var Localidades = res.d.Localidades;

    if (Resultado) 
    {
        var optLocalidades = "<option value='-1'>...</option>";

        for (var i = 0; i < Localidades.length; i++) {
            optLocalidades += "<option value='"+ Localidades[i].Localidad +"'>"+ Localidades[i].Localidad +"</option>";
        }

        $("#sltLocalidad").html(optLocalidades);

        // Obtiene el parametro de búsqueda que se haya introducido en el buscador simple y realiza la búsqueda.
        var busqueda = $.getURLParam('busqueda');
        if (busqueda != null) {
            $('#inputBusqueda').val(busqueda);
            ObtenerBusquedaAvanzada();
        }
    }
    else 
    {
        MostrarAlerta(res.d.Mensaje, 2);
    }
}

//---------------------------------------------------------------------------
// BÚSQUEDA AVANZADA
//---------------------------------------------------------------------------
function ObtenerBusquedaAvanzada() {
    var Texto = $("#inputBusqueda").val();

    //ESTRELLAS FALTA
    var MinPuntuacion = $("#sliderPuntuacion").slider("values", 0);
    var MaxPuntuacion = $("#sliderPuntuacion").slider("values", 1);
    
    var HabIndividual = $("#ckTipoHAbitacionIndividual").is(':checked');
    var HabDoble2    = $("#ckTipoHAbitacionDoble2Camas").is(':checked');
    var HabDoble1    = $("#ckTipoHAbitacionDoble1Cama").is(':checked');

    var FechaEntrada = $("#inputFechaEntrada").datepicker('getDate');
    var FechaSalida = $("#inputFechaSalida").datepicker('getDate');

    var Localidad    = $("#sltLocalidad :selected").val();

    var Wifi         = $("#ckWifi").is(':checked');
    var Parking      = $("#ckParking").is(':checked');
    var Restaurante  = $("#ckRestaurante").is(':checked');
    var Mascotas     = $("#ckMascotas").is(':checked');
    var Piscina      = $("#ckPiscina").is(':checked');
    var Spa          = $("#ckSpa").is(':checked');
    var Gimnasio     = $("#ckGimnasio").is(':checked');
    var Reuniones    = $("#ckReuniones").is(':checked');
    
    var Data = {
        Texto: Texto,
        //ESTRELLAS
        MinPuntuacion: MinPuntuacion,
        MaxPuntuacion: MaxPuntuacion,
        HabIndividual: HabIndividual,
        HabDoble2: HabDoble2,
        HabDoble1: HabDoble1,
        FechaEntrada: FechaEntrada,
        FechaSalida: FechaSalida,
        Localidad: Localidad,
        Wifi: Wifi,
        Parking: Parking,
        Restaurante: Restaurante,
        Mascotas: Mascotas,
        Piscina: Piscina,
        Spa: Spa,
        Gimnasio: Gimnasio,
        Reuniones: Reuniones
    };

    Ajax("ObtenerBusquedaAvanzada", JSON.stringify(Data), ObtenerBusquedaAvanzadas_cb);
}

function ObtenerBusquedaAvanzadas_cb(res) {
    res = res.d;

    if (res.Resultado)
    {
        if (res.Hoteles.length == 0)
        {
            MostrarNoHayCoincidencias();
        }
        else
        {
            MostrarHotelesResultado(res.Hoteles);
        }
    }
    else
    {
        MostrarAlerta(res.Mensaje, 2);
    }
}

//---------------------------------------------------------------------------
// NO HAY COINCIDENCIAS
//--------------------------------------------------------------------------
function MostrarNoHayCoincidencias() {
    var sHtml = '<p>No existen coincidencias para esa búsqueda. Por favor, inténtelo otra vez.';
    $('#resultadosHoteles').html(sHtml);
    $('#contentResultado').show();
}

//--------------------------------------------------------------------------
// RESULTADO HOTELES BÚSQUEDA
//--------------------------------------------------------------------------
function MostrarHotelesResultado(hoteles) {
    var sHtml = '',
        noEstrellas;
    
    for(var index = 0; index < hoteles.length; index++){
        sHtml += '<div class="ResultadoHotel" id="' + hoteles[index].idHotel + '">';
        sHtml +=    '<div class="ContentImagenHotel">';
        sHtml +=        '<img src="' + hoteles[index].imagen + '" />';
        sHtml +=        '<div class="sombraEstrellas"></div>';
        sHtml +=        '<div class="contentEstrellasHotel">';

        for(var index2 = 0; index2 < hoteles[index].clasificacion; index2++){
            sHtml +=  '<img src="Content/Images/icono_estrella_on.png" />';
        }

        noEstrellas = 5 - hoteles[index].clasificacion;

        for(var index3 = 0; index3 < noEstrellas; index3++){
            sHtml += '<img src="Content/Images/icono_estrella_off.png" />';
        }

        sHtml += '</div>';
        sHtml += '</div>';
        sHtml += '<div class="InfoHotel">';
        sHtml += '<h3 class="content-info-nombre-hotel">' + hoteles[index].nombre + ' - ' + hoteles[index].cadena + '</h3>';
        sHtml += '<div class="content-info-principal-hotel">';
        sHtml += '<label><strong>' + hoteles[index].direccion + '</strong></label>';
        sHtml += '<label>' + hoteles[index].provincia + ', ' + hoteles[index].poblacion + ' - ' + hoteles[index].telefono + '</label>';
        sHtml += '<div class="content-info-interes">';
        sHtml += '<span>Habitaciones: <b>' + hoteles[index].habitaciones + '</b></span>';
        sHtml += '<span>Entrada: <b>' + hoteles[index].fechaEntrada + ' h</b></span>';
        sHtml += '<span>Salida: <b>' + hoteles[index].FechaSalida + ' h</b></span>';
        sHtml +=  '<span>Dias cancelación: <b>' + hoteles[index].cancelacion  + '</b></span>';
        sHtml +=  '</div>';
        sHtml +=  '<div class="content-info-interes">';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].wifi) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Wifi</strong></span>';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].parking) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Parking</strong></span>';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].restaurante) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Restaurante</strong></span>';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].salones) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Salones</strong></span>';
        sHtml += '</div>';
        sHtml +=  '<div class="content-info-interes">';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].gimnasio) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Gimnasio</strong></span>';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].mascotas) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Mascotas</strong></span>';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].piscina) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Piscina</strong></span>';
        sHtml +=  '<span>'
        sHtml +=  (hoteles[index].spa) ? '<img src="Content/Images/checked.png" />' : '<img src="Content/Images/unchecked.png" />';
        sHtml +=  '<strong>Spa</strong></span>';
        sHtml +=  '</div>';
        sHtml +=  '</div>';
        sHtml +=  '<div class="content-info-secundaria-hotel">';
        sHtml +=  '<div class="content-info-visual">';
        sHtml +=  '<div class="modulo">';
        sHtml +=  '<label>' + hoteles[index].puntuación + '</label>';
        sHtml +=  '<span>Puntuación</span>';
        sHtml +=  '</div>';
        sHtml +=  '<div class="modulo">';
        sHtml +=  '<label>' + hoteles[index].votos + '</label>';
        sHtml +=  '<span>Votos</span>';
        sHtml +=  '</div>';
        sHtml +=  '</div>';
        sHtml +=  '<div class="content-boton-mas-info">';
        sHtml += '<button data-id-hotel="' + hoteles[index].idHotel + '" class="boton-mas-info">Info</button>';
        sHtml +=  '</div>';
        sHtml +=  '</div>';
        sHtml +=  '</div>';
        sHtml += '</div>';

        $('#resultadosHoteles').html(sHtml);

        $('.boton-mas-info').button({
            icons: { primary: "ui-icon-circle-plus" }
        });
        $('.boton-mas-info').click(function () {
            var idHotel = $(this).attr('data-id-hotel'),
                FechaEntrada = $("#inputFechaEntrada").datepicker('getDate'),
                FechaSalida = $("#inputFechaSalida").datepicker('getDate');

            Ajax('ObtenerHabitacionesDeHotel', JSON.stringify({ idHotel: idHotel, FechaEntrada: FechaEntrada, FechaSalida: FechaSalida }), MostrarMasInfoHotel, idHotel);
        });

        $('#contentResultado').slideUp(500);
        $('#contentFiltros').slideUp(500, function () {
            $("#btnLimpiarBusquedaHoteles").hide();
            $("#btnBuquedaHoteles").hide();
            $("#btnNuevaBusqueda").show();
            $('#contentResultado').slideDown(1000);
        });
    }
}

//--------------------------------------------------------------------------
// INFO + HABITACIONES HOTEL ESPECIFICO
//------------------------------------------------------------------------
function MostrarMasInfoHotel(res, idHotel) {
   
    var sHtml = "";
    sHtml +=    "<div class='content-galeria-imagenes-hotel'>";
    sHtml +=        "<div class='galeria-imagenes-hotel' id='galeria-imagenes-hotel-" + idHotel + "'>";

    var imagenes = res.d.Imagenes;
    if (imagenes.length > 0)
    {
        for (var index = 0; index < imagenes.length; index++) {
            sHtml += "<a href='" + imagenes[index].ruta + "'><img src='" + imagenes[index].ruta + "' /></a>";
        }
    }
    else
    {
        sHtml += "<a href='Content/Images/Sin_imagen_disponible.jpg'><img id='sin-imagen' src='Content/Images/Sin_imagen_disponible.jpg' /></a>";
    }

    sHtml +=        "</div>";
    sHtml +=    "</div>";
    sHtml +=    "<div class='content-info-habitaciones-hotel'>";
    sHtml +=        "<p>"; 
    sHtml +=            res.d.Descripcion;
    sHtml += "</p>";
    sHtml += "<div class='content-section'>";
    sHtml += "Habitaciones disponibles";
    sHtml += "</div>";
    sHtml +=        "<table>";
    sHtml +=            "<thead>";
    sHtml +=                "<tr>";
    sHtml +=                    "<th>Tipo</th>";
    sHtml +=                    "<th>Descripción</th>";
    sHtml +=                    "<th>Precio</th>";
    sHtml +=                    "<th></th>";
    sHtml +=                "</tr>";
    sHtml +=            "</thead>";
    sHtml +=            "<tbody>";

    var habitaciones = res.d.Habitaciones;

    var ensesion = $('#ensesion').data('ensesion');

    for (var index = 0; index < habitaciones.length; index++) {
        sHtml +=        "<tr>";
        sHtml +=            "<td>" + habitaciones[index].tipo + "</td>";
        sHtml +=            "<td class='descripcion'>" + habitaciones[index].descripcion + "</td>";
        sHtml += "<td>" + habitaciones[index].precio + "</td>";

        if (ensesion) {
            sHtml += "<td><button class='boton-reservar' data-habitacion='" + JSON.stringify(habitaciones[index]) + "'>Reservar</button></td>";
        }

        sHtml +=        "</tr>";
    }  
    
    sHtml +=            "</tbody>";
    sHtml +=        "</table>";
    sHtml +=    "</div>";

    $('.resultado-mas-info').hide('slow').remove();
    $('#' + idHotel).after("<div style='display:none;' class='resultado-mas-info' id='resultado-mas-info-" + idHotel + "'></div>");

    $('#resultado-mas-info-' + idHotel).html(sHtml);

    $('.boton-reservar').click(function () {
        var habitacion = $.parseJSON($(this).attr('data-habitacion'));
        
        MostrarDialogoReserva(habitacion);
    });

    $('#galeria-imagenes-hotel-' + idHotel).jGallery();
    $('#resultado-mas-info-' + idHotel).show("fold", 1000);
}

//------------------------------------------------------------------------
// LIMPIAR BÚSQUEDA
//------------------------------------------------------------------------
function LimpiarFormBusqueda() {
    $("#contentBuscador input[type='text']").val('');
    $("#contentBuscador select").val(-1);
    $("#contentBuscador input[type='checkbox']").attr('checked', false);
    $("#sliderPuntuacion").slider('values', 0, 1);
    $("#sliderPuntuacion").slider('values', 1, 10);
    $("#spanRangoPuntuacion").html("(" + $("#sliderPuntuacion").slider("values", 0) + " - " + $("#sliderPuntuacion").slider("values", 1) + ")");
    $("#sliderPrecio").slider('values', 0, 20);
    $("#sliderPrecio").slider('values', 1, 300);
    $("#spanRangoPrecio").html("(" + $("#sliderPrecio").slider("values", 0) + "€ - " + $("#sliderPrecio").slider("values", 1) + "€)");
    $("#inputFechaSalida").datepicker("setDate", "+1d");
    $("#inputFechaEntrada").datepicker("setDate", "0d");
}

function InicializarEventoTarjeta(input) {
    var contar = false;
    if (input < 4) {
       
        var i = 1;
        $('#campo-tarjeta-' + input).keyup(function (e) {
            for (var index = 48; index <= 57; index++) {
                if (e.which == index) {
                    i++;
                    break;
                }
            }
            if (i > 4) {
                var sig = input + 1;
                $('#campo-tarjeta-' + sig).val('');
                $('#campo-tarjeta-' + sig).focus();
                InicializarEventoTarjeta(input + 1);
                i = 1;
            }
        });
    }  
}

function MostrarDialogoReserva(habitacion) {
    var FechaEntrada = $("#inputFechaEntrada").datepicker('getDate'),
        FechaSalida = $("#inputFechaSalida").datepicker('getDate'),
        diasEnHotel = CalcularDiasEnHotel(FechaEntrada, FechaSalida),
        totalReserva = redondeo2decimales(habitacion.precioSinFormato * diasEnHotel),
        hotel = $('.ResultadoHotel#' + habitacion.idHotel + ' .content-info-nombre-hotel').html();

    CargarDatosUsuarioReserva();
    $('#dialogo-reserva #habitacion-reserva').data('habitacion-reserva', habitacion);
    $('#dialogo-reserva #nombre-hotel').html(hotel);
    $('#dialogo-reserva #precio-reserva').html(habitacion.precioSinFormato);
    $('#dialogo-reserva #tipo-reserva').html(habitacion.tipo);
    $('#dialogo-reserva #dias-reserva').html(diasEnHotel);
    $('#dialogo-reserva #fecha-entrada-reserva').html($("#inputFechaEntrada").val());
    $('#dialogo-reserva #fecha-salida-reserva').html($("#inputFechaSalida").val());
    $('#dialogo-reserva #total-reserva-sin-iva').html(totalReserva);
    $('#dialogo-reserva #total-reserva').html(redondeo2decimales(totalReserva + (totalReserva * 21 / 100)));

    //$('#dialogo-reserva #num-habitaciones-reserva').val(0);

    $('#dialogo-reserva').dialog('open');
}

//------------------------------------------------------------------------
// CALCULO DE DIAS ESTANCIA
//------------------------------------------------------------------------
function CalcularDiasEnHotel(FechaEntrada, FechaSalida) {
    var diferencia = FechaSalida.getTime() - FechaEntrada.getTime();

    return  Math.floor(diferencia / (1000 * 60 * 60 * 24));
}

//------------------------------------------------------------------------
// REALIZAR RESERVA
//------------------------------------------------------------------------
function RealizarReserva() {
    var habitacion = $('#dialogo-reserva #habitacion-reserva').data('habitacion-reserva');
    var numTarjeta = $('#campo-tarjeta-1').val() + $('#campo-tarjeta-2').val() + $('#campo-tarjeta-3').val() + $('#campo-tarjeta-4').val(); 

    if (luhn_check(numTarjeta) && numTarjeta!='') {
        var Reserva = {
            HabitacionesId: habitacion.idHabitacion,
            UsuariosId: $('#ensesion').data('ensesion'),
            Fecha_Entrada: $("#inputFechaEntrada").datepicker('getDate'),
            Fecha_Salida: $("#inputFechaSalida").datepicker('getDate'),
            Noches: parseInt($('#dialogo-reserva #dias-reserva').html()),
            PrecioTotal: redondeo2decimales(parseFloat($('#dialogo-reserva #total-reserva').html())),
            HotelesId: habitacion.idHotel,
            Tarjeta_Credito: numTarjeta
        }

        Ajax('GuardarReserva', JSON.stringify({ Reserva: Reserva }), RealizarReserva_cb);
    } else {
        MostrarAlerta('El número de tarjeta no es válido.', 2);
    }
}

function RealizarReserva_cb(res) {
    if (res.d.Resultado) {
        MostrarAlerta('Reserva guardada correctamente', 1);

        var habitacion = $('#dialogo-reserva #habitacion-reserva').data('habitacion-reserva');

        var idHotel = habitacion.idHotel,
        FechaEntrada = $("#inputFechaEntrada").datepicker('getDate'),
        FechaSalida = $("#inputFechaSalida").datepicker('getDate');

        Ajax('ObtenerHabitacionesDeHotel', JSON.stringify({ idHotel: idHotel, FechaEntrada: FechaEntrada, FechaSalida: FechaSalida }), MostrarMasInfoHotel, idHotel);

        $('#dialogo-reserva').dialog('close');
    }
    else {
        MostrarAlerta(res.d.Mensaje, 2);
    }
}

//------------------------------------------------------------------------
// VALIDAR TARJETA
//------------------------------------------------------------------------
function luhn_check(card_number) {

    var cc_array = card_number.split("");
    cc_array.reverse();
    var digit_string = "";

    for (counter = 0; counter < cc_array.length; counter++) {
        var current_digit = parseInt(cc_array[counter]);
        if (counter % 2 != 0) {
            cc_array[counter] *= 2;
        }
        digit_string += cc_array[counter];
    }

    var digit_sum = 0;

    for (counter = 0; counter < digit_string.length; counter++) {
        current_digit = parseInt(digit_string.charAt(counter));
        digit_sum += current_digit;
    }

    return (digit_sum % 10 == 0) ? true : false;
}